package com.chilly.other.pattern.template;

/**
 * https://www.cnblogs.com/V1haoge/p/9558825.html
 *
 * 模板模式使用场景：
 * 建房为例：房子要封闭，有门，有窗等等，
 * 但是要什么样的门，什么样的窗，这些并不在模板中描述，
 * 这个交给子类来完善，比如门使用防盗门，窗使用北向的窗等等。
 * <p>
 * Created by Chilly Cui on 2020/12/11.
 */
public abstract class HouseTemplate {
    protected String name;

    public HouseTemplate(String name) {
        this.name = name;
    }

    //公共逻辑 final修饰
    public final void buildHouse() {
        buildBase();
        buildWall();
        buildDoor();
        buildWindow();
    }

    protected abstract void buildBase();

    protected abstract void buildWall();

    protected abstract void buildDoor();

    protected abstract void buildWindow();

}
